/**
 * 上海中赢金融信息服务有限公司
 * Copyright (c) 2016-2026 HMC,Inc.All Rights Reserved.
 */
package com.sys.midware.assist.utils.string;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 
 * <b>ClassName：</b> HtmlUtil <br/>
 * <b>Description：</b> TODO <br/>
 * <b>@author：</b> mobing <br/>
 * <b>@date：</b> 2015年11月20日 下午3:24:41 <br/>
 * <b>@version: </b>  <br/>
 */
public class HtmlStringUtil {
    private final static Logger logger = LoggerFactory.getLogger(HtmlStringUtil.class);
	/**
	 * 默认的空值
	 */
	public static final String EMPTY = "";


	/**
	 * 删除字符串中html
	 * 
	 * @param htmlStr
	 * @return
	 */
	public static String delHTMLTag(String htmlStr) {
		if(htmlStr==null ){
		    logger.error("delHTMLTag param is not null!");
			return null;
		}
		String regEx_script = "<script[^>]*?>[\\s\\S]*?<\\/script>"; // 定义script的正则表达式
		String regEx_style = "<style[^>]*?>[\\s\\S]*?<\\/style>"; // 定义style的正则表达式
		String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式
		String regEx_html_Code = "&nbsp;";// 去掉html标签中的code，如&nbsp;等
		Pattern p_script = Pattern.compile(regEx_script,
				Pattern.CASE_INSENSITIVE);
		Matcher m_script = p_script.matcher(htmlStr);
		htmlStr = m_script.replaceAll(""); // 过滤script标签
		Pattern p_style = Pattern
				.compile(regEx_style, Pattern.CASE_INSENSITIVE);
		Matcher m_style = p_style.matcher(htmlStr);
		htmlStr = m_style.replaceAll(""); // 过滤style标签

		Pattern p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
		Matcher m_html = p_html.matcher(htmlStr);
		htmlStr = m_html.replaceAll(""); // 过滤html标签

		Pattern p_html_code = Pattern.compile(regEx_html_Code,
				Pattern.CASE_INSENSITIVE);
		Matcher m_html_code = p_html_code.matcher(htmlStr);
		htmlStr = m_html_code.replaceAll(""); // 过滤html字符

		return htmlStr.trim(); // 返回文本字符串
	}
	/**
	 * 将连续的多个回车|换行|制表位|空格处理成一个
	 * 
	 * @param htmlStr
	 * @return
	 */
	public static String muiltBlankDual(String origStr) {
		String regEx_r = "\r+"; //回车
		String regEx_n = "\n+"; //换行
		String regEx_t = "\t+"; //制表位
		String regEx_b = " +"; //空格
		if(origStr != null){
		 return origStr.replaceAll(regEx_b, " ")
							  .replaceAll(regEx_n, "\n")
							  .replaceAll(regEx_t, "\t")
							  .replaceAll(regEx_r, "\r");
		}
		return null; 
	}
	/**
	 * 删掉所有空白,包括空格、回车、换行、制表位
	 * 
	 * @param htmlStr
	 * @return
	 */
	public static String delBlank(String origStr) {
		if(origStr!=null){
			return origStr.replaceAll("\\s*", "");
		}
		return null; 
	}
	
	/**
	 * 删掉所有空格
	 * 
	 * @param htmlStr
	 * @return
	 */
	public static String delSpace(String origStr) {
		if(origStr!=null){
			return origStr.replaceAll(" +", "");
		}
		return null; 
	}

	/**
	 * 半角转全角
	 * 
	 * @param input
	 *            String.
	 * @return 全角字符串.
	 */
	public static String ToSBC(String input) {
		char c[] = input.toCharArray();
		for (int i = 0; i < c.length; i++) {
			if (c[i] == ' ') {
				c[i] = '\u3000';
			} else if (c[i] < '\177') {
				c[i] = (char) (c[i] + 65248);

			}
		}
		return new String(c);
	}

	/**
	 * 全角转半角
	 * 
	 * @param input
	 *            String.
	 * @return 半角字符串
	 */
	public static String ToDBC(String input) {
		char c[] = input.toCharArray();
		for (int i = 0; i < c.length; i++) {
			if (c[i] == '\u3000') {
				c[i] = ' ';
			} else if (c[i] > '\uFF00' && c[i] < '\uFF5F') {
				c[i] = (char) (c[i] - 65248);

			}
		}
		String returnString = new String(c);
		return returnString;
	}
	
	/**
	 * 删除html注释
	 * 
	 * @param input
	 *            String.
	 * @return 半角字符串
	 */
	public static String delHtmlComment(String input) {
		String regEx_o = "<\\!--.*-->";//html注释
		Pattern  p_o = Pattern.compile(regEx_o, Pattern.CASE_INSENSITIVE);
       Matcher  m_o = p_o.matcher(input);
       input = m_o.replaceAll("");
		return input;
	}
	/**
	 * 删除html中的nbsp;
	 * 
	 * @param input
	 *            String.
	 * @return 半角字符串
	 */
	public static String delHtmlNBSP(String input) {
		if(input!=null){
			input = input.replaceAll("(&nbsp;)+", "");
		}
		return input;
	}
	
	
}
